package com.wu.project.admin.dao;

import com.wu.project.admin.entity.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @author xuan
 */
@Mapper
public interface UserDao {

    /**
     * 查询用户信息
     * @param username 用户名
     * @return user信息
     */
    UserEntity queryUserByName(String username);

    /**
     * 查询角色列表
     * @param userId 角色ID
     * @return 角色信息
     */
    List<RoleEntity> queryRoleList(Long userId);

    /**
     * 查询权限列表
     * @param userId 角色ID
     * @return 权限信息
     */
    List<AuthorityEntity> queryAuthorityList(Long userId);

    /**
     * 查询用户列表
     * @param userQueryVO 实体类参数
     * @return list
     */
    List<UserFullDO> queryUserList(UserQueryVO userQueryVO);

    /**
     * 查询个数
     * @param userQueryVO 实体类参数
     * @return list
     */
    Integer queryUserListSize(UserQueryVO userQueryVO);

    /**
     * 查询工人列表
     * @param queryVO
     * @return
     */
    List<UserWorkerDO> queryWorkerList(WorkerQueryVO queryVO);

    /**
     * 查询工人总条数
     * @param workerQueryVO
     * @return
     */
    Integer queryWorkerListSize(WorkerQueryVO workerQueryVO);

    /**
     * 查询用户菜单
     * @param uid 用户ID
     * @return list
     */
    List<MenuDTO> queryUserMenu(String uid);

    /**
     * @return int
     */
    List<MenuDTO> queryAllMenu();

    Integer checkUserName(String userName);

    Integer checkWorkerName(String workerName);

    Integer addRoleMenu(AddRoleMenuVO addRoleMenuVO);

    Integer addUser(UserFullDO userDTO);

    Integer updateUser(UserFullDO userDTO);

    Integer delUser(UserFullDO userDTO);

    Integer addWorker(UserWorkerDO workerDTO);

    Integer updateWorker(UserWorkerDO workerDTO);

    Integer delWorker(UserWorkerDO workerDTO);

    List<Map> userSimpleList();
}
